package main

import "fmt"

type Person struct {
	name string
	age  int
}
type Bag struct {
	items []int
}

// 定义属性结构
type property struct {
	value int
}

// 设置属性值 指针类型接收器
func (p *property) setValue(v int) {
	p.value = v
}

// 取值
func (p *property) getValue() int {
	return p.value
}

type point struct {
	x int
	y int
}

// 非指针接收器的加方法
func (p point) add(o point) point {
	return point{p.x + o.x, p.y + o.y}
}

func (b *Bag) insert(itemid int) {
	b.items = append(b.items, itemid)
	fmt.Println(b.items, *b)
}

// 每个方法只能有一个接收器
func main() {
	var b Bag
	//b := new(Bag)
	b.insert(100)

	// 实例化属性
	p := new(property)
	p.setValue(8)
	fmt.Println(p.getValue())

	// 初始化
	p1 := point{22, 33}
	p2 := point{44, 55}
	// 加
	res := p1.add(p2)
	fmt.Println(res)

}
